package pe.com.bbva.targps.job;

import java.util.List;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import pe.com.bbva.carga.bo.ProcesoCargaBO;
import pe.com.bbva.carga.bo.UploadClassTargpsBO;
import pe.com.bbva.carga.domain.ProcesoCarga;
import pe.com.bbva.mantenimiento.bo.ParametroBO;
import pe.com.bbva.mantenimiento.domain.Parametro;
import pe.com.bbva.util.Constantes;
import pe.com.stefanini.core.exceptions.BOException;
import pe.com.stefanini.core.exceptions.DAOException;

@Service("uploadTargpsJob")
public class UploadTargpsJob {

	Logger logger = Logger.getLogger(this.getClass());

	@Resource
	private UploadClassTargpsBO uploadClassTargpsBO;
	
	@Resource
	private ProcesoCargaBO procesoCargaBO;
	
	@Resource
	private ParametroBO parametroBO;
	
	public void GenerarGPSAutomatico() throws BOException, DAOException {
		logger.info("INICIO GenerarGPSAutomatico");
		Parametro flag = parametroBO.findById(Constantes.FLAG_PROCESO_GPS);
		try {
			if(flag.getValor().equals("0")){
				flag.setValor("1");
				parametroBO.update(flag);
				ProcesoCarga procesoBuscar = new ProcesoCarga();
				procesoBuscar.setEstadoFacturacion(String.valueOf(Constantes.ESTADO_PROCESO_NO_FACTURADO));
				procesoBuscar.setEstado(String.valueOf(Constantes.ESTADO_PROCESO_COMPLETO));
				List<ProcesoCarga> procesos = procesoCargaBO.findProcesosCarga(procesoBuscar);
				if(procesos!=null && !procesos.isEmpty()){
					uploadClassTargpsBO.procesarArchivos(procesos, null);
					flag.setValor("0");
					parametroBO.update(flag);
				}
			}
			logger.info("FIN GenerarGPSAutomatico");
		} catch (Exception e) {
			flag.setValor("0");
			parametroBO.update(flag);
			e.printStackTrace();
		}
	}
}